package pl.edu.mimuw.mas.editor;

import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyleRange;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Dialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

/**
 * Implementacja okna dialogowego z informacjami o pliku.
 */

public class AboutDialog extends Dialog {

	private static final int X_SIZE = 580;
	private static final int Y_SIZE = 230;

	private static final String TITLE = "DeerHunter";

	private static final String AUTHOR = "Autorzy:";
	private static final String AUTHOR_TEXT = "Filip Grządkowski <filip.grzadkowski@students.mimuw.edu.pl>\n"
			+ "Michał Matczuk <michal.matczuk@students.mimuw.edu.pl>";
	private static final String INTRO = "Ten program jest narzędziem do modelowania powierzchni. "
			+ "Powstaje jako fragment pracy magisterskiej na Uniwersytecie Warszawskim "
			+ "pod opieką ";
	private static final String SUPERVISOR = "prof. dr hab. Barbary Dunin-Kęplicz";
	
	private Shell shell;
	
	/**
	 * Tworzy obiekt okna dialogowego.
	 * @param parent rodzic obiektu 
	 * @param style styl obiektu
	 */
	public AboutDialog(Shell parent, int style) {
		super(parent, style);
	}

	/**
	 * Tworzy obiekt okna dialogowego.
	 * @param parent rodzic obiektu
	 */
	public AboutDialog(Shell parent) {
		this(parent, SWT.NONE);
	}
	
	/**
	 * Otwiera okno dialogowe, ustawia rozmiar i czeka az zostanie ono
	 * zamkniete.
	 */
	public void open() {
		createContents();
		shell.open();
		shell.layout();
		Display display = getParent().getDisplay();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch()) {
				display.sleep();
			}
		}
	}
	
	/**
	 * Tworzy zawartość okna dialogowego (layout, pola napisowe etc).
	 */
	protected void createContents() {
		shell = new Shell(getParent(), SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
		shell.setSize(X_SIZE, Y_SIZE);
		shell.setLayout(new GridLayout());
		shell.setText("O programie");
		
		final StyledText text = new StyledText(shell, SWT.BORDER | SWT.WRAP);
		text.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, true));
		text.setEditable(false);
		text.setEnabled(false);
		text.setJustify(true);
		text.setText(TITLE + "\n\n" 
				+ INTRO + SUPERVISOR + "\n\n" 
				+ AUTHOR + "\n" + AUTHOR_TEXT + "\n");
		
		final StyleRange styleTitle = new StyleRange();
		styleTitle.start = 0;
		styleTitle.length = TITLE.length();
		styleTitle.fontStyle = SWT.BOLD;
		text.setStyleRange(styleTitle);
		
		final StyleRange styleAuthor = new StyleRange();
		styleAuthor.start = TITLE.length() + INTRO.length() + SUPERVISOR.length() + 4;
		styleAuthor.length = AUTHOR.length();
		styleAuthor.fontStyle = SWT.BOLD;
		text.setStyleRange(styleAuthor);
		
		final StyleRange styleSupervisor = new StyleRange();
		styleSupervisor.start = TITLE.length() + INTRO.length() + 2;
		styleSupervisor.length = SUPERVISOR.length();
		styleSupervisor.fontStyle = SWT.BOLD;
		text.setStyleRange(styleSupervisor);
		
	}
}
